import init from './counter.js';

async function run() {
    // 初始化WASM模块
    const Module = await init();
    
    // 创建Counter实例，初始值为0
    const counter = new Module.Counter(0);
    
    // 获取DOM元素
    const countDisplay = document.getElementById('count');
    const incrementBtn = document.getElementById('increment');
    const decrementBtn = document.getElementById('decrement');
    const resetBtn = document.getElementById('reset');
    const addBtn = document.getElementById('add');
    const addValueInput = document.getElementById('addValue');
    
    // 新增greet相关DOM元素
    const nameInput = document.getElementById('nameInput');
    const greetBtn = document.getElementById('greetBtn');
    const greetOutput = document.getElementById('greetOutput');

    // 更新显示的函数
    function updateDisplay() {
        countDisplay.textContent = counter.getCount();
    }
    
    // 初始化显示
    updateDisplay();
    
    // 绑定事件处理程序
    incrementBtn.addEventListener('click', () => {
        counter.increment();
        updateDisplay();
    });
    
    decrementBtn.addEventListener('click', () => {
        counter.decrement();
        updateDisplay();
    });
    
    resetBtn.addEventListener('click', () => {
        counter.reset();
        updateDisplay();
    });
    
    addBtn.addEventListener('click', () => {
        const value = parseInt(addValueInput.value) || 0;
        counter.add(value);
        updateDisplay();
    });

    // 新增greet功能
    greetBtn.addEventListener('click', () => {
        const name = nameInput.value.trim();
        if (name) {
            // 调用从C++导出的greet函数
            const greeting = Module.greet(name);
            greetOutput.textContent = greeting;
            
            // 注意：如果greet返回的是C++字符串指针，可能需要使用UTF8ToString
            // 使用Embind时通常会自动转换，但如果是手动绑定可能需要：
            // greetOutput.textContent = Module.UTF8ToString(greeting);
        } else {
            greetOutput.textContent = "Please enter a name";
        }
    });
}

run().catch(console.error);